#region Copyright
/// <copyright>
/// Copyright (c) 2007 Ilia Shramko.
/// Released under the terms of the GNU General Public License.
/// </copyright>
#endregion

using System;
using System.Collections.Generic;
using System.Text;

namespace Osh.Media
{
	public interface IMediaStreamDescriptor
	{
		string Name { get; }
		TimeSpan Duration { get; }
	}

	public interface IAudioStream : IMediaStreamDescriptor
	{
		string Language { get; }
		/// <summary>
		/// The Channels property is the number of channels in an audio stream.
		/// </summary>
		int Channels { get; }
		int FourCC { get; }
		/// <summary>
		/// The Bitrate property is the bit rate for the audio stream, in bits per second.
		/// </summary>
		int Bitrate { get; }
	}

	public interface IVideoStream : IMediaStreamDescriptor
	{
		int Width { get; }
		int Height { get; }
		int FrameRate { get; }
		int FourCC { get; }
		/// <summary>
		/// The Bitrate property is the bit rate for the video stream, in bits per second.
		/// </summary>
		int Bitrate { get; }
	}

	public interface ISubtitleStream : IMediaStreamDescriptor
	{
		string Language { get; }
	}

	public interface IDvbSubtitleStream : ISubtitleStream
	{
		int Pid { get; }
	}

	public interface ITeletextSubtitleStream : ISubtitleStream
	{
		Teletext.PageAddress PageAddress { get; }
	}

	public class MediaStreamCollection<T> : List<T> where T : IMediaStreamDescriptor
	{
	}

	public class AudioStreamCollection : List<IAudioStream>
	{
	}

	public class VideoStreamCollection : List<IVideoStream>
	{
	}

	public class SubtitleStreamCollection : List<ISubtitleStream>
	{
	}

}
